table of contents
SSH-AGENT(1) | General Commands Manual | SSH-AGENT(1) |
NOM¶
ssh-agent
— agent
d'authentification
SYNOPSIS¶
ssh-agent |
[-a bind_address]
[-c | -s ]
[-d ] [command
[args ...]] |
ssh-agent |
[-c | -s ]
-k |
DESCRIPTION¶
ssh-agent
est un programme qui sert
à manipuler des clefs utilisées pour une authentification par
clef publique (RSA, DSA). L'idée, c'est que
ssh-agent
soit chargé au démarrage
d'une session X ou terminal, puis que tous les autres programmes ou
fenêtres soient lancés en tant que clients du programme
ssh-agent
. On peut trouver l'agent grâce
à des variables d'environnement, et l'utiliser automatiquement pour
une authentification lors d'une connexion à d'autres machines par
ssh(1).
Les options sont les suivantes :
-a
bind_address- Branche l'agent à une socket unix-domain bind_address. Par défaut /tmp/ssh-XXXXXXXX/agent.<ppid>.
-c
- Affiche des commandes C-shell sur la sortie standard
stdout(3). C'est le comportement par défaut si
votre
SHELL
ressemble à un shell de type csh. -s
- Affiche des commandes Bourne shell sur la sortie standard
stdout(3). C'est le comportement par défaut si
votre
SHELL
ne ressemble pas à un shell de type csh. -k
- Tue l'agent en cours d'exécution (identifié par la variable
d'environnement
SSH_AGENT_PID).
-d
- Mode de débogage. Avec cette option,
ssh-agent
ne crée pas de processus fils (cf. fork(1) ).
Si on fournit une ligne de commande, on l'exécute en tant que sous-processus de l'agent. Quand la commande s'arrête, l'agent en fait autant.
L'agent ne contient pas de clef quand il démarre. On en
ajoute à l'aide de la commande ssh-add(1).
Exécuté sans argument, ssh-add(1) ajoute les
fichiers $HOME/.ssh/id_rsa,
$HOME/.ssh/id_dsa et
$HOME/.ssh/identity. Si les identités sont
protégées par mot de passe (passphrase),
ssh-add(1) le demande (à l'aide d'une petite
application X11 si on est sous X11, ou dans un terminal sinon). Puis il
envoie l'identité à l'agent. L'agent peut contenir plusieurs
identités, et utiliser n'importe laquelle automatiquement.
ssh-add -l
affiche les identités
chargées.
Le principe est le suivant : on exécute l'agent sur le PC, portable ou terminal local. On n'a pas besoin de stocker les données d'authentification sur une autre machine, et on n'envoie pas les mots de passe (passphrase) sur le réseau. La connexion à l'agent est transmise par SSH, donc l'utilisateur obtient les permissions déduites des identités de n'importe où sur le réseau, de manière sécurisée.
Il y a principalement deux manières de démarrer l'agent : soit l'agent exécute une nouvelle sous-commande pour laquelle on a exporté des variables d'environnement, soit il affiche les commandes (syntaxe sh(1) ou csh(1)) à exécuter dans le shell d'appel. Ensuite, ssh(1) vérifie ces variables et les utilise pour se connecter à l'agent.
L'agent n'envoie jamais une clef privée par son canal d'appel. Par contre, les opérations qui nécessitent une clef privée sont prises en charge par l'agent, et le résultat est envoyé à l'appelant. De cette manière, on cache les clefs privées aux clients de l'agent.
On crée une socket unix-domain, et le nom de cette socket
est stocké dans la variable d'environnement
SSH_AUTH_SOCK
. La socket n'est accessible
qu'à l'utilisateur. Toutefois, on peut facilement contourner cette
restriction en tant que root ou une autre instance du même
utilisateur.
La variable d'environnement SSH_AGENT_PID
contient l'identifiant de processus (process ID) de l'agent.
L'agent s'arrête quand la commande passée sur la ligne de commande s'arrête.
FICHIERS¶
- $HOME/.ssh/identity
- Contient l'identité d'authentification RSA de l'utilisateur pour la version 1 du protocole.
- $HOME/.ssh/id_dsa
- Contient l'identité d'authentification DSA de l'utilisateur pour la version 2 du protocole.
- $HOME/.ssh/id_rsa
- Contient l'identité d'authentification RSA de l'utilisateur pour la version 2 du protocole.
- /tmp/ssh-XXXXXXXX/agent.<ppid>
- Les sockets unix-domain contenant les connexions aux agents d'authentification. Ces sockets ne devraient être lisibles que par leur propriétaire. Elle sont supprimées automatiquement lors de l'arrêt de l'agent.
AUTEURS¶
OpenSSH est dérivé de la version originale et libre ssh 1.2.12 par Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt et Dug Song ont corrigé de nombreux bugs, ré-ajouté des nouvelles fonctionnalités et créé OpenSSH. Markus Friedl a contribué au support des versions 1.5 et 2.0 du protocole SSH.
VOIR AUSSI¶
September 25, 1999 | Linux 5.14.0-427.18.1.el9_4.x86_64 |